import { defineStore } from 'pinia'
import {
  checkListPage, //检测列表分页
  checkFind, //查询检测及相关信息
} from '@/utils/api/checkfz/checkfz'
import {
  queryDict, //查询字典
} from '@/utils/api/dict/dict'
export const useCheckfzStore = defineStore(
  'checkfz',
  () => {
    //检测列表
    const List: AnyArray = []
    const checkPageList = reactive({ List })
    const pageNum = ref(1) // 当前页数
    const islower = ref(false) // 是否到底部
    const TestType = ref('') // 标签状态
    const searchParam = ref('') // 搜索参数
    const TagCode = ref('') // 伤票编码
    const CheckStatus = ref('') // 检测状态
    const CheckStatusName = ref('全部') // 检测状态名称
    const checkStatusList = reactive({
      list: [
        { name: '全部', value: '' },
        { name: '未核销', value: 'CheckStatus1' },
        { name: '已核销', value: 'CheckStatus2' },
      ],
    }) // 检测状态列表
    //处理选中检测状态
    const handleCheckStatus = (value: string) => {}
    // 检测类型字典列表
    const checkList: AnyArray = []
    const checkTypeDict = reactive({ checkList }) // 检测类型字典
    // 获取检测类型字典
    const getCheckTypeDict = async () => {
      const res: any = await queryDict({
        DictType: 'TestType',
        DictStatus: 'Normal',
      })
      let arr =
        res?.data?.map((item: any) => {
          return {
            name: item.DictName,
            value: item.DictCode,
          }
        }) || []
      arr.unshift({
        name: '全部',
        value: '',
      })
      checkTypeDict.checkList = arr
    }
    // 获取检测列表
    const getcheckList = async () => {
      if (islower.value) {
        return
      }
      islower.value = true
      console.log(' 获取检测列表 ', {
        pageNum: pageNum.value,
        pageSize: 5,
        TestType: TestType.value || '',
        searchParam: searchParam.value,
        TagCode: TagCode.value || '',
        CheckStatus: CheckStatus.value || '',
      })

      const res: any = await checkListPage({
        pageNum: pageNum.value,
        pageSize: 5,
        TestType: TestType.value || '',
        searchParam: searchParam.value,
        CheckStatus: CheckStatus.value || '',
      })
      let Obj: any = res.data
      if (pageNum.value <= Obj.totalPage) {
        pageNum.value++
        setTimeout(() => {
          checkPageList.List.push(...Obj.list)
        }, 200)
      } else {
        uni.showToast({
          title: '没有更多数据了',
          icon: 'none',
          duration: 1500,
        })
      }
      islower.value = false
    }
    type typeText = 'search' | 'TestType' | 'all'
    const clearDate = (type: typeText) => {
      pageNum.value = 1
      islower.value = false
      checkPageList.List = []
      switch (type) {
        case 'TestType':
          TestType.value = ''
          searchParam.value = ''
          break
        case 'all':
          TestType.value = ''
          searchParam.value = ''
          break
      }
    }
    // 查询检测及相关信息
    const findcheck = async (TagCode: string) => {
      const res: any = await checkFind({ TagCode })
      return res.data
    }
    return {
      islower, // 是否到底部
      checkPageList, // 检测列表
      pageNum, // 当前页数
      getcheckList, // 获取检测列表
      TestType, // 状态
      clearDate, // 清空数据
      searchParam, // 搜索参数
      findcheck, // 查询检测及相关信息
      getCheckTypeDict, // 获取检测类型字典
      checkTypeDict, // 检测类型字典列表
      TagCode, // 伤票编码
      checkStatusList, // 检测状态列表
      CheckStatus, // 检测状态
      CheckStatusName, // 检测状态名称
    }
  },
  {
    // 配置持久化
    persist: {
      // 调整为兼容多端的API
      storage: {
        setItem(key, value) {
          uni.setStorageSync(key, value)
        },
        getItem(key) {
          return uni.getStorageSync(key)
        },
      },
      paths: ['TestType', 'checkTypeDict'],
    },
  },
)
